home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Ahoy: Best Utilites
/
Ahoy_Best_Utilites_1986_Double_L.d64
/
2-col directory
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
4KB
|
115 lines
5 rem ****************
10 rem define variables
15 rem ****************
20 poke 53280,6: poke 53281,0: poke 646,1: rem set screen, text colors
25 col=1: dim fi$(40)
30 wh$=chr$(5): gr$=chr$(30): ye$=chr$(158): og$=chr$(129): pu$=chr$(156)
35 cl$=chr$(147): ho$=chr$(19): rv$=chr$(145)+chr$(18): up$=chr$(145)
40 sp$=" ": for bl=0 to 18: sp$=sp$+" " : next
45 open 6,8,0,"$": rem open directory
50 rem **************************
55 rem find and print disk header
60 rem **************************
65 print cl$: rem clear screen
70 gosub 535: print ho$;
75 get#6, by$: if by$ <> chr$(34) then 75
80 print spc(8) "";og$;by$;
85 get#6, by$: if by$ <> "" then print by$;: goto 85
90 print wh$
95 rem ************************
100 rem find and print filenames
105 rem ************************
110 for entry=0 to 19: i=i+1: f$="": sk=0
115 get#6, by$,by$:get#6, hb$,lb$
120 get#6, by$: if by$ <> chr$(32) then 230
125 get#6, by$: if by$ <> chr$(34) then 125
130 if col/2=int(col/2) then print tab(19)" ";
135 for bl=1 to 16: get#6, by$
140 if by$="" then 160
145 if by$=chr$(34) then sk=1: goto 160
150 if sk=0 then f$=f$+by$
155 goto 165
160 by$=chr$(32)
165 print by$;: next: fi$(i)=f$
170 get#6, by$
175 get#6, by$: if by$=chr$(32) then 175
180 print ","; by$; " "
185 get#6, by$: if by$ <> "" then 185
190 next: col=col + 1
200 ifcol > 2 and col/2 <> int(col/2) then i=0:gosub 560
205 if col=2 then print ho$: goto 110
210 poke 214,22: poke211,0:print rv$;ye$;" ":gosub430: gosub 265: print ho$;wh$
215 if col/2 <> int(col/2) then for bl=0 to 19: print sp$: next: goto 225
220 for bl=0 to 19: print tab(19);sp$: next: gosub 580
225 print sp$;sp$;ho$: goto 110
230 rem *****************
235 rem print blocks free
240 rem *****************
245 bl = asc(hb$+chr$(0)): bl$=str$(bl+256 * asc(lb$+chr$(0)))
250 poke 214,22: poke 211,0: print rv$;ye$;" "
255 poke 214,23:poke 211,10:print rv$;pu$;bl$;" blocks free ";: close 6: bc=1
260 gosub 430: gosub 265:print wh$ + cl$: end
265 rem ***********************
270 rem determine user's choice
275 rem ***********************
280 c=0: r=21: sc=1024: x=1864: d=54272: ok=0
285 get by$:if by$="" then 285
290 if by$=chr$(133) then gs=1: gosub 340: gs=0: return: rem display more dir.
295 if by$=chr$(134) then run: rem repeat dir.
300 if by$=chr$(135) then 385: rem load a program
305 if by$=chr$(136) then gosub 465: return: rem erase a program
310 if by$=chr$(17) then r=r+1: ok=1: if r>21 then r=21: rem cursor down
315 if by$=chr$(145) then r=r-1: ok=1: if r<1 then r=1: rem cursor up
320 if by$=chr$(29) then c=20: ok=1: rem cursor right
325 if by$=chr$(157) then c=0: ok=1: rem cursor left
330 if ok=0 then 265
335 gosub 340: goto 285
340 rem ***********
345 rem move cursor
350 rem ***********
355 for y=x to x+1
360 if peek(y) > 128 then poke y,(peek(y)-128): poke y+d,1
365 next: if gs then return
370 poke 211,c: poke 214,r: print up$;: x=sc+(40*r)+c
375 for y=x to x+1: if peek(y) < 128 then poke y,(peek(y)+128): poke y+d,7
380 next: return
385 rem **************
390 rem load a program
395 rem **************
400 close 6: z=r:if r>20 then return
405 if c=20 then z=z+20
410 if fi$(z)="" then return
415 print "[147][146]load"; chr$(34); fi$(z); chr$(34);",8"
420 print "run[145][145][145][145]"
425 poke 631,19: poke 632,13: poke 633,13: poke 198,3: end
430 rem ****
435 rem beep
440 rem ****
445 poke 54296,15: poke 54277,7: poke 54278,133
450 poke 54273,28: poke 54272,49: poke 54276,17
455 for k=1 to 150: next: poke 54276,18
460 poke 54296,0: return
465 rem ***************
470 rem erase a program
475 rem ***************
480 poke 214,25: poke 211,0:print rv$;" erase -- are you sure (y/n)? ";
485 get j$: if j$="" then 485
490 if j$ <> "y" then 500
495 goto510
500 gosub 535: gs=1:gosub 340: gs=0: if bc then 250
505 goto 210
510 z=r: if c=20 then z=z+20
515 if fi$(z)="" or r>20 then gosub535:goto 265
520 kl$="s0:"+fi$(z)
525 open 15,8,15: print#15, kl$: close15: run
535 rem ******************
540 rem print command line
545 rem ******************
550 poke 214,25: poke 211,0
555 print rv$+gr$+" f1=more f3=repeat f5=load f7=erase ";: return
560 rem **********************
565 rem set filenames to nulls
570 rem **********************
575 for k=1 to 20: fi$(k)="": next: return
580 for k=21 to 40: fi$(k)="": next: return